# 创建列表的第一种方式
lst = ["hello", "word", 98]
print(lst)

# 创建列表的第二种方式
lst2 = list(["hello", "word", 98])
print(lst2)

lst3 = list()
print(lst3)

# 列表数据的获取
print(lst[0])
print(lst[-1])

# 获取hello的下标位置
print(lst.index("hello"))

# list中插入元素
lst.insert(1, "插入元素")
print(lst)
lst.extend([1, 2, 4])
print(lst)

# 列表中删除元素
del lst[1]
print(lst)
lst.pop(-1)
print(lst)
lst.clear()
print(lst)

# 列表也支持索引和切片
squares = [1, 4, 9, 16, 25]
print(squares[2])
print(squares[2:])

# 以下切片操作会返回列表的全部数据 浅拷贝
print(squares[:])

# 列表还支持合并操作
print(squares + [122, 100, 101, 102, 103])

# 与 immutable 字符串不同, 列表是 mutable 类型，其内容可以改变
cubes = [1, 8, 27, 65, 125]
cubes[3] = 4 ** 3
print(cubes)

# append() 方法 可以在列表结尾添加新元素
cubes.append('面对疾风吧')
print(cubes)

# 为切片赋值可以改变列表大小，甚至清空整个列表
letters = ['a', 'b', 'c', 'd', 'e', 'f', 'g']
print(letters)
letters[2:5] = ['C', 'D', 'E']  # 前闭后开区间
print(letters)
letters[2:5] = []
print(letters)
letters[:] = []
print(letters)

data = [1, 2, 3]
print(data[::-1])  # 倒叙

# 内置函数 len() 也支持列表
letters = ['a', 'b', 'c', 'd']
print(len(letters))

# 还可以嵌套列表（创建包含其他列表的列表）
a = ['a', 'b', 'c']
n = [1, 2, 3]
x = [a, n]
print(x)
print(x[0])
print(x[0][0])

data_list = [12, 13, 14, 21]
print(len(data_list))
print(max(data_list))
print(min(data_list))

# 列表元素的遍历
print('---------遍历-----------')
for data in data_list:
    print(data)
